package com.triones.api.service.interlace;

import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.page.TableDataInfo;
import com.triones.api.entity.ApplyVipRecordDO;
import com.triones.api.entity.bo.EmailChangeRecordBO;
import com.triones.api.entity.bo.UpdatePwdBO;
import com.triones.api.entity.interlace.dto.InterlaceBlockchainAddressCatalogueDO;
import com.triones.api.entity.interlace.dto.InterlaceMemberDO;
import com.triones.api.entity.interlace.vo.CustomInterlaceMemberVO;
import com.triones.api.entity.interlace.vo.InterlaceBlockchainAddressCatalogueVO;
import com.triones.api.entity.interlace.vo.InterlaceMemberVO;
import com.triones.api.entity.vo.CustomApplyVipRecordVO;
import com.triones.api.entity.vo.CustomInviteRecordVO;

import java.util.List;

/**
 * interlace 用户会员相关接口
 */
public interface InterlaceMemberService {

    /**
     * 检查是否具备白标用户申请条件
     * @return
     */
    Boolean checkHaveApplyVip();

    /**
     * 白标用户申请
     * @return
     */
    boolean apiApplyVip();

    /**
     * 个人中心 -常用地址列表（分页）
     * @param pageQuery
     * @return
     */
    TableDataInfo<InterlaceBlockchainAddressCatalogueVO> blockchainAddressCataloguePageList(String keyword,PageQuery pageQuery);

    /**
     * 个人中心 -常用地址新增
     * @param dto
     * @return
     */
    boolean addBlockchainAddressCatalogue(InterlaceBlockchainAddressCatalogueDO dto);

    /**
     * 个人中心 -常用地址详情
     * @param id
     * @return
     */
    InterlaceBlockchainAddressCatalogueVO blockchainAddressCatalogueDetail(Long id);

    /**
     * 个人中心 -常用地址修改
     * @return
     */
    boolean editBlockchainAddressCatalogue(InterlaceBlockchainAddressCatalogueDO dto);

    /**
     * 个人中心 -常用地址删除
     * @param id
     * @return
     */
    boolean removeBlockchainAddressCatalogue(Long id);

    /**
     * 校验昵称唯一性
     * @param dto
     * @return
     */
    boolean checkNickNameUnique(InterlaceBlockchainAddressCatalogueDO dto);

    /**
     * 推广中心 -用户列表（分页）
     * @param isEffective
     * @param pageQuery
     * @return
     */
    TableDataInfo<CustomInviteRecordVO> apiInviteMemberPageList(String isEffective, PageQuery pageQuery);

    /**
     * 个人中心 -修改登录密码
     * @param bo
     * @return
     */
    boolean updatePwd(UpdatePwdBO bo);

    /**
     * 更换邮箱
     * @param bo
     * @return
     */
    boolean emailRedirect(EmailChangeRecordBO bo);

    /**
     * 用户列表（分页）
     * @param dto
     * @param pageQuery
     * @return
     */
    TableDataInfo<CustomInterlaceMemberVO> pageList(InterlaceMemberDO dto, PageQuery pageQuery);

    /**
     * 用户详情
     * @param id
     * @return
     */
    CustomInterlaceMemberVO getDetail(Long id);

    /**
     * 禁用/解除禁用
     * @param dto
     * @return
     */
    boolean prohibit(InterlaceMemberDO dto);

    /**
     * 系统设置会员
     * @param dto
     * @return
     */
    boolean sysSetVip(InterlaceMemberDO dto);

    /**
     * 会员申请列表（分页）
     * @param dto
     * @param pageQuery
     * @return
     */
    TableDataInfo<CustomApplyVipRecordVO> vipApplyPageList(ApplyVipRecordDO dto, PageQuery pageQuery);

    /**
     * 审核会员申请
     * @param dto
     * @return
     */
    boolean auditVipApply(ApplyVipRecordDO dto);

    /**
     * 用户列表
     * @return
     */
    List<InterlaceMemberVO> list();

    /**
     * 资产刷新
     * @param id
     * @return
     */
    boolean refreshMoney(Long id);
}
